查看原文
其他

Python:朋友圈配图,我承包了

爬虫俱乐部 Stata and Python数据分析 2023-01-01

本文作者:冀思慧,中南财经政法大学金融学院

本文编辑:孙一博

技术总编:王子一

Stata&Python云端课程来啦!

      为了平衡团队运营成本,维系公众号的运营,也与国内动辄数千元的Stata课程缩短差距,我们的网课不得不上调价格,我们决定于2022年4月1日起调价,Python课程的价格调整为399.9元Stata基础课程调为399.9元Stata进阶课程调整到399.9元。大家可以告知一下身边想要购买的小伙伴,欲购从速哦,对报名有任何疑问欢迎在公众号后台和腾讯课堂留言~我们在这篇推文提供了每门课程的课程二维码,大家有需要的话可以直接扫描二维码查看课程详情并进行购买哦~

引言
Python中有许多用于图像处理的库,本篇主要使用到OpenCV和Pillow,另外我们还会使用到wordcloud和paddlehub。(如果你的电脑上安装了Anaconda就不需要再下载Pillow,否则可以通过pip进行安装。)接下来我们通过一些例子来体会一下Python的“美图”功能。
一、图片导入与信息查看

在对图像进行处理之前,我们首先需要加载出来一张图片,我们以加载文件中存在的图像为例子,加载图片并查看图片信息,操作如下:

from PIL import Image img = Image.open('G:\image\horse.jpeg','r') img.show() #展示图像print(img.size,img.format,img.mode)

      Image中利用open(filename,mode)函数打开图像,通过show函数可以展示储存在G盘image文件夹下名horse且格式为jpeg的图像,如下所绘。

通过返回对象的属性,来查看图像信息。其中,size通过像素表示打开图像的大小——宽度和高度,每一个像素代表一个坐标单位;format表示图像的格式,包括PNG、JPEG等;mode表示图像的模式,包括RGB、HSV等。返回的信息如下所示:

二、图像的裁剪

当我们拍摄出废片时,不要慌张,可以视情况截取出自己需要的部分来拯救废片。裁剪图像用的函数为crop(box),它返回的也是一个Image对象,其中box是一个含有四个数字的元组,前两个数字表示裁剪的矩形图像区域中左上角的横纵坐标,后两个数字代表右下角的横纵坐标,我们可以根据图片的大小,输入相应的坐标进行裁剪。

matrix = (300,250,700,500)img_horse = img.crop(matrix)img_horse.show()


      截取到的图像如上所示,我们就得到了大图中的一部分,如果要对处理后的图像进行保存,可以使用save(filename,format)函数来保存指定格式的图像。

img_horse.save('3.png','png')
三、图像亮度的增强

       有时候拍出来的照片亮度不够或者过亮都会成为废片,我们可以使用图像增强函数ImageEnhance来对图片的亮度进行调整,我们仍以“horse.jpeg”图像为例子,将亮度增加50%。

from PIL import ImageEnhancebright = ImageEnhance.Brightness(img) #ImageEnhance.Brightness用于增加图片的亮度,并返回一个Image对象brightimg_bright = bright.enhance(1.5)img_bright.show()
结果如下所示:

四、九宫格照片
想发一张图,又想发九宫格,我们通过Python来操作一下,就可以实现啦!
from PIL import Imageim = Image.open('G:\image\horse.jpeg') # 读取图片width = im.size[0]//3height = im.size[1]//3 # 宽高各除 3,获取裁剪后的单张图片大小start_x = 0start_y = 0 # 裁剪图片的左上角坐标im_name = 1 # 用于给图片命名for i in range(3): # 循环裁剪图片 for j in range(3): crop = im.crop((start_x, start_y, start_x+width, start_y+height)) crop.save(str(im_name) + '.jpeg') # 裁剪图片并保存 start_x += width im_name += 1 # 将左上角坐标的 x 轴向右移动 start_x = 0 # 当第一行裁剪完后 x 继续从 0 开始裁剪 start_y += height # 裁剪第二行
我们执行上面的代码后,就会得到1~9格式为“jpeg”的图片,我们将图片编辑一下就可以发朋友圈啦!

五、动图转图片
有时候看到一个可爱的动图时,特别喜欢其中的某个瞬间,奈何手速不够快,没法准确的截取到,我们可以使用图像序列ImageSequence模块来遍历gif图像中的所有帧并保存为图像,导入如下的海绵宝宝动图:

from PIL import ImageSequencefrom PIL import Imagegif = Image.open('G:\image\海绵宝宝.gif')for i,frame in enumerate(ImageSequence.Iterator(gif)): if frame.mode == 'JPEG': frame.save("%d.jpg" %i) else: frame.save("%d.png" % i)
得到如下结果:

我们可以从中挑选自己喜欢的图片进行拼接,做成那种拼接图,看起来也是不一样的感觉呢!

以上介绍的只是PIL可实现的众多功能中微不足道的几种方法啦~大家可以使用这几种方法来改变一下自己朋友圈的照片,快去实践一下吧!
END
最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10。



腾讯课堂课程二维码




   


 对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!














往期推文推荐

 绘制全国祠堂密度地图

 如何使用Stata绘制一幅好看的柱状图?

【爬虫篇】基于selenium爬取美团评论

 双标的莱万——足球无关政治?!

 Stata处理重复值:duplicates

It's time to send a flower to your lover!        2021各省GDP新鲜出炉

 爬虫实战-采集全国各省疫情数据

 log——为你的操作保驾护航

 一行代码教你玩转emoji

 票房遇冷的春节档口碑冠军丨《狙击手》影评分析

 学习丰县,营造良好营商环境!

 大国丢娃图:从川渝到徐州!

 丰县“失火”,殃及徐州:股市超跌近30亿!

 Unicode转义字符——编码与解码

        徐州!徐州!

        B站弹幕爬虫——冬奥顶流冰墩墩&雪容融

        不会用Stata做描述性统计表?so easy!

        丰沛之地:备足姨妈巾

 过年啦,用Python绘制一幅属于你的春联吧!

       登上爬虫俱乐部“时光机” |上“机”出发 开启一段奇妙之旅

       【基础篇】查找并输出子字符串的定位

        Stata中的小清新命令——添加观测值

        PCA(主成分分析法)降维——Python实现

       超好用的事件研究法

        如何绘制任泽平《鼓励生育基金》的几幅图

        Python 第六天——字符串

        findname——想要什么找什么

        Python字符串之“分分合合”

        PDF转docx可批量操作?——wordconvert的小技巧

        考研之后,文科生需以“do”躬“do”!

       手绘五星兴家国——用Stata绘制五星红旗

        Seminar丨董事会的性别多样化和企业创新:来自国际的证据

       Python与数据库交互——窗口函数

        Stata之post命令——数据邮递 

        爬虫俱乐部成员的Stata学习经验分享来啦!

关于我们 


   微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。

   武汉字符串数据科技有限公司一直为广大用户提供数据采集和分析的服务工作,如果您有这方面的需求,请发邮件到statatraining@163.com,或者直接联系我们的数据中台总工程司海涛先生,电话:18203668525,wechat: super4ht。海涛先生曾长期在香港大学从事研究工作,现为知名985大学的博士生,爬虫俱乐部网络爬虫技术和正则表达式的课程负责人。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里
为作者署名,并有赏金分成。

2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众
号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存